package cc.shacocloud.kotlin.tools.csv

/**
 * CSV读取配置项
 * @author 思追(shaco)
 */
data class CsvReadConfig(
    /** 指定标题行号，-1表示无标题行 */
    val headerLineNo: Long = -1,
    /** 是否跳过空白行，默认true  */
    val skipEmptyRows: Boolean = true,
    /** 每行字段个数不同时是否抛出异常，默认false  */
    val errorOnDifferentFieldCount: Boolean = false,
    /** 定义开始的行（包括），此处为原始文件行号  */
    val beginLineNo: Long = 0,
    /** 结束的行（包括），此处为原始文件行号  */
    val endLineNo: Long = Long.MAX_VALUE - 1,
    /** 每个字段是否去除两边空白符  */
    val trimField: Boolean = false,
    /** 字段分隔符，默认逗号',' */
    val fieldSeparator: Char = ',',
    /** 文本包装符，默认双引号'"' */
    val textDelimiter: Char = '"',
    /** 注释符号，用于区分注释行，默认'#' */
    val commentCharacter: Char? = '#',
    /** 标题别名  */
    val headerAlias: Map<String, String> = emptyMap(),
) {
    companion object {

        val DEFAULT = CsvReadConfig()
    }

}